package com.atguigu.study.config;

import dev.langchain4j.model.chat.ChatModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 同一个系统中，同时使用多个模型，需要使用不同的ChatModel实例，@Bean指定实例名称，方便获取
 * @Description: 知识出处 https://docs.langchain4j.dev/get-started
 */
@Configuration
public class LLMConfig {

    @Value("${alibaba.ai.model.name}")
    private String qwenAiModelName;
    @Value("${alibaba.ai.model.base-url}")
    private String qwenAiBaseUrl;

    @Value("${deepseek.ai.model.name}")
    private String deepSeekAiModelName;
    @Value("${deepseek.ai.model.base-url}")
    private String deepSeekBaseUrl;



    /**
     * @Description: 知识出处，https://api-docs.deepseek.com/zh-cn/
     */
    @Bean(name = "deepseek")
    public ChatModel chatModelDeepSeek() {
        return
                OpenAiChatModel.builder()
                        // 从系统环境变量中获取deepseek的API密钥（api-key）
                        .apiKey(System.getenv("deepSeekApiKey"))
                        .modelName(deepSeekAiModelName)
                        .baseUrl(deepSeekBaseUrl)
                        .build();
    }



    @Bean(name = "qwen")
    public ChatModel chatModelQwen() {
        // 使用OpenAiChatModel的构建器模式来创建和配置ChatModel实例
        return OpenAiChatModel.builder()
                // 从系统环境变量中获取阿里云通义千问的API密钥（api-key）
                .apiKey(System.getenv("aliQwen-api"))
                // 指定使用的模型为"qwen-plus"，必须是官方提供的英文code
                .modelName(qwenAiModelName)
                // 设置与阿里云API兼容的基础URL
                .baseUrl(qwenAiBaseUrl)
                // 完成构建并返回配置好的ChatModel实例
                .build();
    }


}
